package control;

import java.util.List;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.CSVWriter;

public class SudokuWriter {
	
	final String dirPath = model.Data.PFADZUSUDOKUORDNER;
	
	File dir = new File(dirPath);
	
	File file;
	
	public SudokuWriter(String filePath) {
		file = new File(filePath);
	}
	
	
	// Methode um ein Sudoku zu speichern
	public void sudokuSpeichern(byte[][] sudokuFeld) {
		// Als erstes muss nachgeguckt werden, ob die Datei schon vorhanden ist
		if (file.exists() == true) {
			List<String[]> sudokuList = null;
			 try (CSVReader reader = new CSVReader(new FileReader(file))) {
				 sudokuList = reader.readAll();
			 }
			 catch (IOException exception) {
				 System.err.println(exception.getMessage());
			 }
			 try (CSVWriter writer = new CSVWriter(new FileWriter(file))) {
				 String[] sBuffer = new String[81];
				 int sBufferZaehler=0;
				 for (int i=0; i<9; i++) {
					 for (int j=0; j<9; j++) {
						 sBuffer[sBufferZaehler]="" + sudokuFeld[i][j];
						 sBufferZaehler++;
					 }
				 }
				 sudokuList.add(sBuffer);
				 writer.writeAll(sudokuList);
			 }
			 catch (Exception exception) {
				 System.out.println(exception.getMessage());
			}
		}
		//Andernfalls wird die Datei erstellt und die Methode erneut aufgerufen.
		else {
			try {
				if (dir.exists() == false) {
					dir.mkdirs();
				}
				file.createNewFile();
				if (file.exists() != true) {
					System.out.println("File fehlt");
				}
				sudokuSpeichern(sudokuFeld);
			}
			catch (IOException exception) {
				System.err.println(exception.getMessage());
			}
		}
		
	}

}
